package com.gavindon.android.base

import android.content.Context
import android.os.Bundle
import android.os.PowerManager
import androidx.annotation.LayoutRes
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProviders
import com.gavindon.android.network.LoadingHelper

/**
 * description:
 * Created by liNan on  2021/5/6 10:28
 */
abstract class BaseActivity : AppCompatActivity() {


    @get:LayoutRes
    abstract val layoutId: Int


    protected abstract fun onInit(savedInstanceState: Bundle?)


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(layoutId)
        lifecycle.addObserver(LoadingHelper)
        onInit(savedInstanceState)
    }



    /**
     * 在java用泛型时不能够直接地使用类型。
     * 而在kotlin中使用inline配合reified可以使用泛型类型
     */
    inline fun <reified V : BaseViewModel> getViewModel(): V {
        return ViewModelProviders.of(this).get(V::class.java)
    }
}